In the current version of multi-view video coding (MVC) extension based on the International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) Moving Picture Experts Group-4 (MPEG-4) Part 10 Advanced Video Coding (AVC) standard/International Telecommunication Union, Telecommunication Sector (ITU-T) H.264 recommendation (hereinafter the “MPEG-4 AVC standard”), new syntax is added in the sequence parameter set MVC extension to signal the inter-view references. That is, this syntax is used to indicate the inter-view references to be used for anchor and non-anchor pictures.
This syntax can also serve the purpose of building the view dependency map, which can be used for view random access, an implicit decoded reference picture marking process, and so forth. The syntax is defined by looping the variable view_id from 0 to number of views minus 1. view_id indicates the view identifier for a view. It does not include any coding order information.
This definition puts some restriction on how to assign view_id for each view. The definition does not allow gaps in view_ids. If later, some views are not coded, the definition will cause some ambiguity. In addition, this definition lacks some features. For example, the definition does not specify the coding order of each view.
TABLE 1 illustrates the sequence parameter set (SPS) Multi-view Video Coding (MVC) extension syntax.
TABLE 1seq_parameter_set_mvc_extension( ) {CDescriptor num_views_minus_1ue(v) for(i = 0; i <= num_views_minus_1; i++) {  num_anchor_refs_l0[i]ue(v)  for( j = 0; j < num_anchor_refs_l0[i]; j++ )   anchor_ref_l0[i][j]ue(v)  num_anchor_refs_l1[i]ue(v)  for( j = 0; j < num_anchor_refs_l1[i]; j++ )   anchor_ref_l1[i][j]ue(v) } for(i = 0; i <= num_views_minus_1; i++) {  num_non_anchor_refs_l0[i]ue(v)  for( j = 0; j < num_non_anchor_refs_l0[i]; j++ )   non_anchor_ref_l0[i][j]ue(v)  num_non_anchor_refs_l1[i]ue(v)  for( j = 0; j < num_non_anchor_refs_l1[i]; j++ )   non_anchor_ref_l1[i][j]ue(v) }}
The semantics of the syntaxes in TABLE 1 are defined as follows:
num_views_minus_1 plus 1 identifies the total number of views in the bitstream. The value of the number_of_view_minus_1 shall be in the range of 0 to 1023.
num_anchor_refs_l0[i] specifies the number of inter-view prediction references for list0 for anchor pictures with view_id equal to i. The value of num_anchor_refs_l0[i] shall be less than or equal to num_ref_frames.
anchor_ref_l0[i][j] identifies the view_id of the view that is used as the jth reference of list0, for anchor pictures of the view with view_id equal to i.
num_anchor_refs_l1 [i] specifies the number of inter-view prediction references for list1 of the anchor picture with view_id equal to i. The value of num_anchor_refs l1 [i] shall be less than or equal to num_ref_frames.
anchor_ref_l1[i][j] identifies the view_id of the view that is used as the jth reference of list1, for anchor pictures of the view with view_id equal to i.
num_non_anchor_refs_l0[i] specifies the number of inter-view prediction references for list0 for non-anchor pictures with view_id equal to i. The value of num_non_anchor_refs_l0[i] shall be less than or equal to num_ref_frames.
non_anchor_ref_l0[i][j] identifies the view_id of the view that is used as the jth reference of list0, for non-anchor pictures of the view with view_id equal to i.
num_non_anchor_refs_l1[i] specifies the number of inter-view prediction references for list1 for non-anchor pictures with view_id equal to i. The value of num_non_anchor_refs_ l1[i] shall be less than or equal to num_ref_frames.
non_anchor_ref_l1[i][j] identifies the view_id of the view that is used as the jth reference of list1, for non-anchor pictures of the view with view_id equal to i.
The following procedure shall be conducted to place reference pictures from a view that is different from the current view into the reference prediction lists. If the current picture is an anchor picture, then for each value of i from 0 to num_anchor_refs_IX−1, the picture with view_id equal to anchor_ref_IX[i] and with the same PicOrderCnt( ) as the current picture shall be appended to RefPicListX. Otherwise, if the current picture is not an anchor picture, then for each value of i from 0 to num_non_anchor_refs_IX−1, the picture with view_id equal to non_anchor_ref_IX[i] and with the same PicOrderCnt( ) as the current picture shall be appended to RefPicListX.
From TABLE 1, it can be seen that the syntax in the sequence parameter set (SPS) of the Multi-view Video Coding (MVC) extension is defined by looping over the variable view_id from 0 to number of views minus 1. This definition puts some restriction on how to assign view_id for each view. The definition does not allow gaps in view_ids. If later, due to some reason(s), such as bandwidth limitation or a user's interest, some views are not coded, this definition will cause some ambiguity. To keep the continuity of view_id assignment, the following can be implemented.
In a first prior art method for keeping the continuity of view_id assignment, un-coded view information in maintained in the sequence parameter set and the number of inter-view references is set to 0. However, this is not desirable as the decoder will not know if the un-coded view is intentionally missing or due to transmission errors.
In a second prior art method for keeping the continuity of view_id assignment, the un-coded view information is removed from the sequence parameter set. However, this will cause view_id gaps. Thus, view_ids have to be re-assigned. This is also not desirable since view_id is no longer unique to each view.